/*
 * @Description: 文件
 * @Author: rendc
 * @Date: 2025-08-21 09:12:40
 * @LastEditors: rendc
 * @LastEditTime: 2025-08-21 10:27:11
 */

import java.io.File;
import java.io.IOException;

public class Test01 {

  public static void main(String[] args) throws IOException {
    String pathName = "/Users/cc/Desktop/Work/20250714-JD2511-山西大学/授课内容/day29/Test01.java";
    String parent = "/Users/cc/Desktop/Work/20250714-JD2511-山西大学/授课内容/day29";
    String child = "Test03.java";
    // C:\Users\cc\Desktop\newFile\new.txt
    // String pathName = "C:\\Users\\cc\\Desktop\\newFile\\new.txt";
    File file1 = new File(pathName);
    // 父路径和子路径创建文件对象
    File file2 = new File(parent, child);
    // 父级文件对象和子路径创建文件对象
    File parentFile = new File(parent);
    File file3 = new File(parentFile, child);
    File file4 = new File("/Users/cc/Desktop");
    System.out.println("file1:" + file1);
    System.out.println("file2:" + file2);
    System.out.println("file3:" + file3);
    // 返回的是文件、目录的名称
    System.out.println("file1.getName():" + file1.getName());
    // 返回文件的构造路径
    System.out.println("file1.getPath():" + file1.getPath());
    // 返回文件的绝对路径名字符串
    System.out.println("file1.getAbsolutePath:" + file1.getAbsolutePath());
    // 返回文件或者目录的长度
    System.out.println("file1.length:" + file1.length());

    System.out.println("file4.getName():" + file4.getName());
    System.out.println("file4.getPath():" + file4.getPath());
    System.out.println("file4.getAbsolutePath:" + file4.getAbsolutePath());
    System.out.println("file4.length:" + file4.length());
    // 相对路径和绝对路径

    File file5 = new File("/Users/cc/Desktop/Work/20250714-JD2511-山西大学/授课内容/day29/Test01.java");
    File file6 = new File("Test01.java");
    System.out.println("file5.getPath():" + file5.getPath());// xxxxx
    System.out.println("file6.getPath():" + file6.getPath()); // Test01.java"
    System.out.println("file5.getAbsolutePath:" + file5.getAbsolutePath());
    System.out.println("file6.getAbsolutePath:" + file6.getAbsolutePath());

    // 判断文件是否存在
    // exists()
    System.out.println("file5.exists():" + file5.exists()); // true
    File file7 = new File("Test99.java");
    System.out.println("file7.exists():" + file7.exists()); // false
    // isFile() isDirectory()
    System.out.println("file5.isFile():" + file5.isFile()); // true
    System.out.println("file5.isDirectory():" + file5.isDirectory()); // false
    // createNewFile() // 注意处理异常 创建文件 Linux： vi vim touch
    System.out.println("file7.createNewFile():" + file7.createNewFile()); // true
    // delete() 目录、文件
    System.out.println("file7.delete():" + file7.delete()); // true
    // mkdir() 创建目录 Linux： mkdir
    File file8 = new File("newDir");
    System.out.println("file8.mkdir():" + file8.mkdir()); // true
    // delete() 目录（非空目录不能删除）、文件
    // System.out.println("file8.delete():" + file8.delete()); // true
    // mkdirs() 创建级联目录 Linux： mkdir -p
    File file9 = new File("newDir0/newDir1/newDir2/");
    System.out.println("file9.mkdirs():" + file9.mkdirs()); // true
    System.out.println("file9.getAbsolutePath:" + file9.getAbsolutePath());
    System.out.println("file9.delete():" + file9.delete()); // true
    // renameTo() 文件？目录？非空目录？
    // canRead() canWrite()
    // setReadOnly setWritable setExecutable

    // listFiles() 目录 文件
    // 目录调用 返回目录中的子文件
    // 文件调用 返回null
    File file10 = new File("/Users/cc/Desktop/Work/20250714-JD2511-山西大学/授课内容/day29");
    System.out.println(file10.getAbsolutePath());
    File[] filesList = file10.listFiles();
    // System.out.println(filesList.length);
    for (File file : filesList) {
      if (file.isDirectory()) {
        System.out.println("目录：" + file.getName());
      } else if (file.isFile()) {
        System.out.println("文件：" + file.getName());
      }
    }
    // list()
    // String[] strList = file10.list();
    // for (String string : strList) {
    // System.out.println(string);
    // }
  }
}